package com.example.clientesoap;

import java.io.IOException;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.*;
import org.ksoap2.transport.*;
import org.xmlpull.v1.XmlPullParserException;

import android.os.AsyncTask;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {
	private int contador = 0;
	private String rutPaciente = "";
	private String inforPaciente = "";
	private EditText editTxtResultado;
	private String url = "http://10.0.2.2:8080/Taller1WS_2/services/ServicioWebEncuesta";
	private String NAMESPACE = "http://ws.encuesta";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		super.onCreate(savedInstanceState);
		editTxtResultado = (EditText) findViewById(R.id.editTextIngreso);
		new obtenerRutBackground().execute();
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

	public void gestionarRut(View v) {
		String datoIngresado = "";
		int rut;
		int rutIngresado = 0;
		datoIngresado = editTxtResultado.getText().toString();

		rut = Integer.parseInt(rutPaciente);
		try {
			rutIngresado = Integer.parseInt(datoIngresado);
			this.validarRut(null, rut, rutIngresado);
		
		} catch (Exception e) {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("Importante");
			builder.setMessage("No ha ingresado Rut");
			builder.setPositiveButton("OK", null);
			builder.create();
			builder.show();
		}
	}

	public void validarRut(View v, int rut, int rutIngresado) {

		if (rut == rutIngresado) {
			this.ir(v);

		} else {
			AlertDialog.Builder builder = new AlertDialog.Builder(this);
			builder.setTitle("Importante");
			builder.setMessage("Paciente no registrado");
			builder.setPositiveButton("OK", null);
			builder.create();
			builder.show();
		}

	}

	// Metodo para ir a la siguiente actividad
	public void ir(View v) {
		Intent i = new Intent(this, Encuesta.class);
		i.putExtra("variable_nombre", inforPaciente);
		startActivity(i);
		finish();
	}

	class obtenerRutBackground extends AsyncTask<Void, Void, String> {

		@Override
		protected String doInBackground(Void... params) {

			String resultadoJSON = "";
			String METHOD_NAME = "getPacientes";
			String SOAP_ACTION = NAMESPACE + "/" + METHOD_NAME;
			SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
			SoapSerializationEnvelope soapEnvelope = new SoapSerializationEnvelope(
					SoapEnvelope.VER11);
			soapEnvelope.dotNet = true;
			soapEnvelope.implicitTypes = true;
			soapEnvelope.setOutputSoapObject(request);

			HttpTransportSE aht = new HttpTransportSE(url);
			Log.d("Cliente SOAP", "Iniciando Consulta");
			try {
				aht.call(SOAP_ACTION, soapEnvelope);
				SoapPrimitive resultString = (SoapPrimitive) soapEnvelope
						.getResponse();
				resultadoJSON = resultString.toString();
				Log.d("Cliente SOAP", "Finalizando Consulta");

			} catch (IOException e) {
				e.printStackTrace();
			} catch (XmlPullParserException e) {
				e.printStackTrace();
			}

			return resultadoJSON;
		}

		@Override
		protected void onPostExecute(String result) {
			super.onPostExecute(result);
			try {
				JSONObject resultado = new JSONObject(result);
				String contenido = resultado.getString("Contenido");
				Log.d("ClienteSoap", contenido);
				JSONArray pacientesJSONArray = new JSONArray(contenido);

				rutPaciente = pacientesJSONArray.getJSONObject(contador)
						.getString("rut");
				inforPaciente = "Paciente: "
						+ pacientesJSONArray.getJSONObject(contador).getString(
								"nombre");
				contador++;
			} catch (JSONException e) {

				e.printStackTrace();
			}

		}
	}

}
